/*
 * Estudiante.cpp
 *
 *  Created on: Nov 8, 2012
 *      Author: Carlos Alegría
 */

#include "Estudiante.h"
#include "Conacyt.h"

namespace poo
{

  // Implementación del constructor de la clase
  //
  Estudiante::Estudiante(const string &nombreCompleto, const string &direccion,
      int edad, const string &noDeCuenta, NivelDeEstudios nivel, int semestre) :
      Persona(nombreCompleto, direccion, edad), noDeCuenta(noDeCuenta), nivel(
          nivel), semestre(semestre), promedio(5.0)
  {
    this->beca = new Conacyt("BecaPOO", LICENCIATURA);
  }

  // Implementación del destructor de la clase
  //
  Estudiante::~Estudiante()
  {
    delete this->beca;
  }

  ostream &
  operator<<(ostream &out, const Estudiante *estudiante)
  {
    out << dynamic_cast<const Persona *>(estudiante) << endl;
    out << "Número de cuenta: " << estudiante->noDeCuenta << endl;
    out << "Nivel:            " << estudiante->nivel << endl;
    out << "Semestre:         " << estudiante->semestre << endl;
    out << "Promedio:         " << estudiante->promedio << endl;
    out << "Beca:             " << estudiante->beca;

    return out;
  }

} /* namespace poo */
